#ifndef DABSTRACTENTITY_H
#define DABSTRACTENTITY_H

#include <QObject>
#include "enums.h"

class DVisitor;

class DAbstractEntity : public QObject
{
	Q_OBJECT

public:
	DAbstractEntity(QObject *parent = 0);
	~DAbstractEntity();

	const QString		name() const;
	void				setName(const QString& strName);

	Access				access() const;
	void				setAccess(Access access);

	EntityType			entityType() const;

	virtual QString		toString() const = 0;

	void				accept(DVisitor& visitor);

	const QUuid&			guid();
protected:
	// class name, enum name, method name only, variable name
	QString				m_strName;
	Access				m_access;
	EntityType			m_eEntityType;
	QUuid				m_guid;
};

#endif // DABSTRACTENTITY_H
